{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Lab 10 - Logistic Regression\n", "\n", "The Challenger Space Shuttle tragically explored in 1986, killing all astronauts on board. The explosion was shown to have been caused by an O-ring failure, likely due to cold temperatures the day of the launch (and also poor engineering that allowed this failure to cause such catastrophy).\n", "\n", "This lab will use experimental data from tests on whether O-rings failed at different temperatures. The data set can be downloaded [here](http://comet.lehman.cuny.edu/owen/teaching/mat328/chall.txt)\n", "\n", "Some of this lab is based off the Harvard Data Science CS109 Lab 4, Fall 2015." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import numpy as np\n", "import statsmodels.formula.api as smf\n", "\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read the data into a dataframe. As in Lab 4, we need to tell `read_csv()` that the data is separated by spaces, and give it column names." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv(\"chall.txt\",sep = \"\\s+\", header = None, names = [\"Temperature\", \"Failure\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a scatter plot with temperature on the x axis and failure on the y axis. What do you notice?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAFZVJREFUeJzt3X+QXeV93/H3R0iAMLIhSKUJkiJslDTEUJmuBdSx4ynEBZpBbUltaF2c1IR2bDpxk0mgbUIwdWYa4rqJx8QOpv6BpzEmkGC1xsWx44bYYyiLLQsDoWz5JcmOEDLCwhZCQt/+ca+Or5b9cXfZo6u7er9mNHt+PHru99lzdz97zrn3uakqJEkCWDDoAiRJhw5DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSY2Fgy5gppYuXVqrVq0adBmSNFTuu+++p6tq2XTthi4UVq1axejo6KDLkKShkuSJftp5+UiS1DAUJEkNQ0GS1DAUJEkNQ0GS1DAUJEkNQ0GS1GgtFJJ8LMlTSb41yf4k+WCSsSQbk5zRVi0A25/bzTc37WD7c7vbfJg5M5N6h21s/Zqv42rL2Nad3Dq6ibGtOwddypzyeXBwtfnmtU8AHwJummT/+cDq7r8zgQ93v865z27YwpW3bWTRggXs2beP6y46nQvXnNTGQ82JmdQ7bGPr13wdV1uuvv1+brr7yWb90rNXcu260wZY0dzweXDwtXamUFV3Ad+dosk64KbquBs4LsmPznUd25/bzZW3beT5PfvYuXsvz+/Zx2/ctvGQ/atjJvUO29j6NV/H1ZaxrTsPCASAm7725NCfMfg8GIxB3lM4CdjUs765u+0lklyeZDTJ6LZt22b0IJuf2cWiBQcOc9GCBWx+ZtcMyz04ZlLvsI2tX/N1XG3ZsGnHjLYPC58HgzEUN5qr6oaqGqmqkWXLpp3P6QDLj1/Mnn37Dti2Z98+lh+/eC5LnDMzqXfYxtav+TqutqxZcdyMtg8LnweDMchQ2AKs6Flf3t02p0449iiuu+h0jl60gCVHLeToRQu47qLTOeHYo+b6oebETOodtrH1a76Oqy2nnLiES89eecC2S89eySknLhlQRXPD58FgpKra6zxZBfzPqnrtBPv+EXAFcAGdG8wfrKq10/U5MjJSs5kldftzu9n8zC6WH794KJ5UM6l32MbWr/k6rraMbd3Jhk07WLPiuKEPhF4+D+ZGkvuqamTadm2FQpJPA28GlgJbgd8GFgFU1UeShM6rk84DfgD8UlVN+9t+tqEgSYezfkOhtZekVtUl0+wv4N1tPb4kaeaG4kazJOngMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUMBQkSQ1DQZLUaDUUkpyX5OEkY0mummD/yiRfTvKNJBuTXNBmPZKkqbUWCkmOAK4HzgdOBS5Jcuq4Zr8J3FJVrwMuBv6wrXokSdNr80xhLTBWVY9W1QvAzcC6cW0KeGV3+VXAt1usR5I0jYUt9n0SsKlnfTNw5rg21wBfSPJvgVcA57ZYjyRpGoO+0XwJ8ImqWg5cAHwqyUtqSnJ5ktEko9u2bTvoRUrS4aLNUNgCrOhZX97d1uudwC0AVfU14Ghg6fiOquqGqhqpqpFly5a1VK4kqc1QuBdYneTkJEfSuZG8flybJ4FzAJL8FJ1Q8FRAkgaktVCoqr3AFcCdwEN0XmX0QJJrk1zYbfZrwC8n+SbwaeAXq6raqkmSNLU2bzRTVXcAd4zbdnXP8oPAG9qsQZLUv0HfaJYkHUIMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSw1CQJDUMBUlSo9VQSHJekoeTjCW5apI2b03yYJIHkvxxm/VIkqa2sK2OkxwBXA/8HLAZuDfJ+qp6sKfNauDfA2+oqmeS/K226pEkTa/NM4W1wFhVPVpVLwA3A+vGtfll4Pqqegagqp5qsR5J0jTaDIWTgE0965u723r9BPATSb6a5O4k57VYjyRpGq1dPprB468G3gwsB+5KclpV7ehtlORy4HKAlStXHuwaJemw0eaZwhZgRc/68u62XpuB9VW1p6oeA/4vnZA4QFXdUFUjVTWybNmy1gqWpMNdm6FwL7A6yclJjgQuBtaPa3M7nbMEkiylcznp0RZrkiRNobVQqKq9wBXAncBDwC1V9UCSa5Nc2G12J7A9yYPAl4Ffr6rtbdUkSZpaqmrQNczIyMhIjY6ODroMSRoqSe6rqpHp2vV1ppDkmCS/leSj3fXVSX7+5RYpSTq09Hv56OPAbuDs7voW4H2tVCRJGph+Q+E1VXUdsAegqn4ApLWqJEkD0W8ovJBkMVAASV5D58xBkjSP9Pvmtd8G/hewIsl/B94A/GJbRUmSBmPaUEgS4K+BfwqcReey0a9U1dMt1yZJOsimDYWqqiR3VNVpwOcOQk2SpAHp957C15O8vtVKJEkD1+89hTOBf5HkCeD7dC4hVVWd3lplkqSDrt9Q+IetViFJOiT0GwrDNReGJGlW+g2Fz9EJhgBHAycDDwM/3VJdkqQB6CsUuq88aiQ5A3hXKxVJkgZmVlNnV9XX6dx8liTNI32dKST51Z7VBcAZwLdbqUiSNDD93lNY0rO8l849htvmvhxJ0iD1e0/hvW0XIkkavClDIcn/YIqXo1bVhZPtkyQNn+nOFN5/UKqQJB0SpgyFqvrLg1WIJGnwprt8dEtVvTXJ/UxwGcm5jyRpfpnu8tGvdL/+fNuFSJIGb7rLR9/pfn3i4JQjSRqkvt7RnOSsJPcmeS7JC0leTPK9touTJB1c/U5z8SHgEuARYDFwGXB9W0VJkgaj77mPqmoMOKKqXqyqjwPntVeWJGkQ+p3m4gdJjgQ2JLkO+A6znExPknTo6vcX+7/str2CzsdxrgAuaqsoSdJgTPc+hZVV9WTPq4+eB5wHSZLmqenOFG7fv5DEWVElaZ6bLhTSs/zqmXae5LwkDycZS3LVFO0uSlJJRmb6GJKkuTNdKNQky9NKcgSdl62eD5wKXJLk1AnaLaHzzul7ZtK/JGnuTRcKfzfJ95LsBE7vLn8vyc4+3ry2Fhirqker6gXgZmDdBO3+E/C7dO5XSJIGaMpQqKojquqVVbWkqhZ2l/evv3Kavk8CNvWsb+5uayQ5A1hRVZ+bqqMklycZTTK6bdu2aR5WkjRbA3uvQZIFwAeAX5uubVXdUFUjVTWybNmy9ouTpMNUm6Gwhc77GfZb3t223xLgtcD/TvI4cBaw3pvNkjQ4bYbCvcDqJCd33w19MbB+/86qeraqllbVqqpaBdwNXFhVoy3WJEmaQmuhUFV76bwD+k7gIeCWqnogybVJ/GxnSToE9Tv30axU1R3AHeO2XT1J2ze3WYskaXpOaidJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqSGoSBJahgKkqRGq6GQ5LwkDycZS3LVBPt/NcmDSTYm+VKSH2+zHknS1FoLhSRHANcD5wOnApckOXVcs28AI1V1OnArcF1b9UiSptfmmcJaYKyqHq2qF4CbgXW9Darqy1X1g+7q3cDyFuuRJE2jzVA4CdjUs765u20y7wQ+P9GOJJcnGU0yum3btjksUZLU65C40Zzk7cAI8HsT7a+qG6pqpKpGli1bdnCLk6TDyMIW+94CrOhZX97ddoAk5wL/EfjZqtrdYj2SpGm0eaZwL7A6yclJjgQuBtb3NkjyOuCPgAur6qkWa5Ek9aG1UKiqvcAVwJ3AQ8AtVfVAkmuTXNht9nvAscCfJNmQZP0k3UmSDoI2Lx9RVXcAd4zbdnXP8rltPr4kaWYOiRvNkqRDg6EgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoYCpKkRquhkOS8JA8nGUty1QT7j0ryme7+e5KsarMeSdLUWguFJEcA1wPnA6cClyQ5dVyzdwLPVNUpwH8FfreteqTZ2P7cbr65aQfbn9s9ZbvRx7bzgS88zOhj2+esz5m2Hdu6k1tHNzG2dee0bWeirXrbePz5+j1os9/xFrbY91pgrKoeBUhyM7AOeLCnzTrgmu7yrcCHkqSqqsW6pL58dsMWrrxtI4sWLGDPvn1cd9HpXLjmpJe0e/uNd/OVsU4YfPAvxnjjKSfwqcvOell9zrTt1bffz013P9msX3r2Sq5dd9pMh3zQ6m3j8efr96DNfifS5uWjk4BNPeubu9smbFNVe4FngRNarEnqy/bndnPlbRt5fs8+du7ey/N79vEbt218yV9po49tbwJhv78a2z7hGUO/fc607djWnQf8MgS46WtPvuy/ltuqt43Hn6/fgzb7ncxQ3GhOcnmS0SSj27ZtG3Q5OgxsfmYXixYc+OOxaMECNj+z64Btdz3y9IT/f6Lt/fY507YbNu2YsIbJtverrXrbePz5+j1os9/JtBkKW4AVPevLu9smbJNkIfAq4CV/YlXVDVU1UlUjy5Yta6lc6YeWH7+YPfv2HbBtz759LD9+8QHb3rR66YT/f6Lt/fY507ZrVhw3YQ2Tbe9XW/W28fjz9XvQZr+TaTMU7gVWJzk5yZHAxcD6cW3WA+/oLv8C8BfeT9Ch4IRjj+K6i07n6EULWHLUQo5etIDrLjqdE4496oB2IyefwBtPOfCK5xtPOYGRk196FbTfPmfa9pQTl3Dp2SsP2Hbp2Ss55cQlsxl66/W28fjz9XvQZr+TSZu/g5NcAPw+cATwsar6nSTXAqNVtT7J0cCngNcB3wUu3n9jejIjIyM1OjraWs1Sr+3P7WbzM7tYfvziKX8IRx/bzl2PPM2bVi+dMBBm0+dM245t3cmGTTtYs+K4l/3L8GDU28bjz9fvwVz0m+S+qhqZtt2w/WFuKEjSzPUbCkNxo1mSdHAYCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWoM3fsUkmwDnhh0HeMsBSaeBGe4zddxwfwdm+MaPgdrbD9eVdPOEzR0oXAoSjLaz5tChs18HRfM37E5ruFzqI3Ny0eSpIahIElqGApz44ZBF9CS+ToumL9jc1zD55Aam/cUJEkNzxQkSQ1DYRaSPJ7k/iQbkox2t12TZEt324buZ0kMlSTHJbk1yV8neSjJ2Ul+JMmfJ3mk+/X4Qdc5U5OMaz4cr5/sqX9Dku8lec+wH7MpxjUfjtm/S/JAkm8l+XSSo7sfRHZPkrEkn+l+KNngavTy0cwleRwYqaqne7ZdAzxXVe8fVF0vV5JPAn9VVTd2n5jHAP8B+G5V/eckVwHHV9WVAy10hiYZ13sY8uPVK8kRdD7e9kzg3Qz5Mdtv3Lh+iSE+ZklOAr4CnFpVu5LcAtwBXAD8aVXdnOQjwDer6sODqtMzBQGQ5FXAm4D/BlBVL1TVDmAd8Mlus08C/3gwFc7OFOOab84B/l9VPcGQH7Nxesc1HywEFnc/k/4Y4DvAPwBu7e4f+PEyFGangC8kuS/J5T3br0iyMcnHhu2UHTgZ2AZ8PMk3ktyY5BXAiVX1nW6bvwFOHFiFszPZuGC4j9d4FwOf7i4P+zHr1TsuGOJjVlVbgPcDT9IJg2eB+4AdVbW322wzcNJgKuwwFGbnZ6rqDOB84N1J3gR8GHgNsIbOAf8vA6xvNhYCZwAfrqrXAd8HruptUJ1rjcN2vXGycQ378Wp0L4ldCPzJ+H1DesyACcc11MesG2Lr6Pyh8mPAK4DzBlrUBAyFWegmPlX1FPBnwNqq2lpVL1bVPuCjwNpB1jgLm4HNVXVPd/1WOr9Mtyb5UYDu16cGVN9sTTiueXC8ep0PfL2qtnbXh/2Y7XfAuObBMTsXeKyqtlXVHuBPgTcAx3UvJwEsp3MPZWAMhRlK8ookS/YvA28BvrX/h7DrnwDfGkR9s1VVfwNsSvKT3U3nAA8C64F3dLe9A/jsAMqbtcnGNezHa5xLOPASy1Afsx4HjGseHLMngbOSHJMk/PBn7MvAL3TbDPx4+eqjGUryajpnB9C5NPHHVfU7ST5F57S2gMeBf91zXXcoJFkD3AgcCTxK59UeC4BbgJV0Zqd9a1V9d2BFzsIk4/ogQ368oPnD5Eng1VX1bHfbCQz/MZtoXPPhZ+y9wNuAvcA3gMvo3EO4GfiR7ra3V9XugdVoKEiS9vPykSSpYShIkhqGgiSpYShIkhqGgiSpsXD6JtJw6L4U80vd1b8NvEhnigvovMHwhYEUNoUk/wq4o/t+CmngfEmq5qVDadbaJEdU1YuT7PsKcEVVbZhBfwt75sqR5pSXj3RYSPKOJP+nOw//HyZZkGRhkh1JPtCd4/7OJGcm+cskj+6frz/JZUn+rLv9kSS/2We/v59kI7A2yXuT3NudR/8j6XgbnTdjfab7/49MsjnJcd2+z0ryxe7y+5LclOSrwCe6j/GB7mNvTHLZwf+uaj4yFDTvJXktnWkR/n5VraFz2fTi7u5XAZ+vqp8GXgCuoTP9wD8Dru3pZi2dKY3XAP88yZo++r2rqk6vqq8Bf1BVrwdO6+47r6o+A2wA3lZVa/q4vPV3gHOq6u3A5cBTVbUWeD2diRlXzub7I/XynoIOB+fS+cU52plyhsXApu6+XVX1593l+4Fnq2pvkvuBVT193FlVzwAkuR34GTo/P5P1+wI/nA4F4Jwkvw4cDSylM2Xy52c4js9W1fPd5bcAP5WkN4RW05kaQpo1Q0GHgwAfq6rfOmBjZ2bK3r/O9wG7e5Z7fz7G33yrafrd1Z22miTHAB+iMzvrliTvoxMOE9nLD8/gx7f5/rgxvauqvoQ0h7x8pMPBF4G3JlkKnVcpzeJSy1vS+aznY+jMif/VGfS7mE7IPN2dYfeinn07gSU9648Df6+73NtuvDuBd+2fcjmdzzVePMMxSS/hmYLmvaq6vzs75ReTLAD2AP8G+PYMurmXzpTGPwZ8cv+rhfrpt6q2p/M50Q/S+XCYe3p2fxy4MckuOvctrgE+mmQHcNcU9fwRnVlQN3QvXT1FJ6ykl8WXpErT6L6y57VV9Z5B1yK1zctHkqSGZwqSpIZnCpKkhqEgSWoYCpKkhqEgSWoYCpKkhqEgSWr8f9vzJ+EvFvWwAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.plot.scatter(x = \"Temperature\", y = \"Failure\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now use statsmodel to fit a logistic regression model to the data. Notice that the code is similar to when we fit a linear regression model to the data." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.441635\n", " Iterations 7\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Logit Regression Results
Dep. Variable: Failure No. Observations: 23
Model: Logit Df Residuals: 21
Method: MLE Df Model: 1
Date: Thu, 03 Oct 2019 Pseudo R-squ.: 0.2813
Time: 17:24:15 Log-Likelihood: -10.158
converged: True LL-Null: -14.134
LLR p-value: 0.004804
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept 15.0429 7.379 2.039 0.041 0.581 29.505
Temperature -0.2322 0.108 -2.145 0.032 -0.444 -0.020
" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: Failure No. Observations: 23\n", "Model: Logit Df Residuals: 21\n", "Method: MLE Df Model: 1\n", "Date: Thu, 03 Oct 2019 Pseudo R-squ.: 0.2813\n", "Time: 17:24:15 Log-Likelihood: -10.158\n", "converged: True LL-Null: -14.134\n", " LLR p-value: 0.004804\n", "===============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------\n", "Intercept 15.0429 7.379 2.039 0.041 0.581 29.505\n", "Temperature -0.2322 0.108 -2.145 0.032 -0.444 -0.020\n", "===============================================================================\n", "\"\"\"" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "logit_model = smf.logit('Failure ~ Temperature',data).fit()\n", "logit_model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Is there an R-squared value in the summary? What is the formula for the model?\n", "\n", "There is another way to get the model parameters:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Intercept 15.042902\n", "Temperature -0.232163\n", "dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "logit_model.params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use these parameters to graph the model equation on the data. \n", "\n", "First, create 200 evenly spaced x values (look at the data to see what their range should be): " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([50. , 50.1758794 , 50.35175879, 50.52763819, 50.70351759,\n", " 50.87939698, 51.05527638, 51.23115578, 51.40703518, 51.58291457,\n", " 51.75879397, 51.93467337, 52.11055276, 52.28643216, 52.46231156,\n", " 52.63819095, 52.81407035, 52.98994975, 53.16582915, 53.34170854,\n", " 53.51758794, 53.69346734, 53.86934673, 54.04522613, 54.22110553,\n", " 54.39698492, 54.57286432, 54.74874372, 54.92462312, 55.10050251,\n", " 55.27638191, 55.45226131, 55.6281407 , 55.8040201 , 55.9798995 ,\n", " 56.15577889, 56.33165829, 56.50753769, 56.68341709, 56.85929648,\n", " 57.03517588, 57.21105528, 57.38693467, 57.56281407, 57.73869347,\n", " 57.91457286, 58.09045226, 58.26633166, 58.44221106, 58.61809045,\n", " 58.79396985, 58.96984925, 59.14572864, 59.32160804, 59.49748744,\n", " 59.67336683, 59.84924623, 60.02512563, 60.20100503, 60.37688442,\n", " 60.55276382, 60.72864322, 60.90452261, 61.08040201, 61.25628141,\n", " 61.4321608 , 61.6080402 , 61.7839196 , 61.95979899, 62.13567839,\n", " 62.31155779, 62.48743719, 62.66331658, 62.83919598, 63.01507538,\n", " 63.19095477, 63.36683417, 63.54271357, 63.71859296, 63.89447236,\n", " 64.07035176, 64.24623116, 64.42211055, 64.59798995, 64.77386935,\n", " 64.94974874, 65.12562814, 65.30150754, 65.47738693, 65.65326633,\n", " 65.82914573, 66.00502513, 66.18090452, 66.35678392, 66.53266332,\n", " 66.70854271, 66.88442211, 67.06030151, 67.2361809 , 67.4120603 ,\n", " 67.5879397 , 67.7638191 , 67.93969849, 68.11557789, 68.29145729,\n", " 68.46733668, 68.64321608, 68.81909548, 68.99497487, 69.17085427,\n", " 69.34673367, 69.52261307, 69.69849246, 69.87437186, 70.05025126,\n", " 70.22613065, 70.40201005, 70.57788945, 70.75376884, 70.92964824,\n", " 71.10552764, 71.28140704, 71.45728643, 71.63316583, 71.80904523,\n", " 71.98492462, 72.16080402, 72.33668342, 72.51256281, 72.68844221,\n", " 72.86432161, 73.04020101, 73.2160804 , 73.3919598 , 73.5678392 ,\n", " 73.74371859, 73.91959799, 74.09547739, 74.27135678, 74.44723618,\n", " 74.62311558, 74.79899497, 74.97487437, 75.15075377, 75.32663317,\n", " 75.50251256, 75.67839196, 75.85427136, 76.03015075, 76.20603015,\n", " 76.38190955, 76.55778894, 76.73366834, 76.90954774, 77.08542714,\n", " 77.26130653, 77.43718593, 77.61306533, 77.78894472, 77.96482412,\n", " 78.14070352, 78.31658291, 78.49246231, 78.66834171, 78.84422111,\n", " 79.0201005 , 79.1959799 , 79.3718593 , 79.54773869, 79.72361809,\n", " 79.89949749, 80.07537688, 80.25125628, 80.42713568, 80.60301508,\n", " 80.77889447, 80.95477387, 81.13065327, 81.30653266, 81.48241206,\n", " 81.65829146, 81.83417085, 82.01005025, 82.18592965, 82.36180905,\n", " 82.53768844, 82.71356784, 82.88944724, 83.06532663, 83.24120603,\n", " 83.41708543, 83.59296482, 83.76884422, 83.94472362, 84.12060302,\n", " 84.29648241, 84.47236181, 84.64824121, 84.8241206 , 85. ])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.linspace(50, 85, 200)\n", "x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we can compute $\\beta_0 + \\beta_1 x$ for all of these x values:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 3.43476444, 3.39393179, 3.35309915, 3.31226651, 3.27143386,\n", " 3.23060122, 3.18976858, 3.14893593, 3.10810329, 3.06727065,\n", " 3.026438 , 2.98560536, 2.94477272, 2.90394007, 2.86310743,\n", " 2.82227478, 2.78144214, 2.7406095 , 2.69977685, 2.65894421,\n", " 2.61811157, 2.57727892, 2.53644628, 2.49561364, 2.45478099,\n", " 2.41394835, 2.37311571, 2.33228306, 2.29145042, 2.25061778,\n", " 2.20978513, 2.16895249, 2.12811985, 2.0872872 , 2.04645456,\n", " 2.00562192, 1.96478927, 1.92395663, 1.88312399, 1.84229134,\n", " 1.8014587 , 1.76062606, 1.71979341, 1.67896077, 1.63812812,\n", " 1.59729548, 1.55646284, 1.51563019, 1.47479755, 1.43396491,\n", " 1.39313226, 1.35229962, 1.31146698, 1.27063433, 1.22980169,\n", " 1.18896905, 1.1481364 , 1.10730376, 1.06647112, 1.02563847,\n", " 0.98480583, 0.94397319, 0.90314054, 0.8623079 , 0.82147526,\n", " 0.78064261, 0.73980997, 0.69897733, 0.65814468, 0.61731204,\n", " 0.57647939, 0.53564675, 0.49481411, 0.45398146, 0.41314882,\n", " 0.37231618, 0.33148353, 0.29065089, 0.24981825, 0.2089856 ,\n", " 0.16815296, 0.12732032, 0.08648767, 0.04565503, 0.00482239,\n", " -0.03601026, -0.0768429 , -0.11767554, -0.15850819, -0.19934083,\n", " -0.24017347, -0.28100612, -0.32183876, -0.3626714 , -0.40350405,\n", " -0.44433669, -0.48516933, -0.52600198, -0.56683462, -0.60766727,\n", " -0.64849991, -0.68933255, -0.7301652 , -0.77099784, -0.81183048,\n", " -0.85266313, -0.89349577, -0.93432841, -0.97516106, -1.0159937 ,\n", " -1.05682634, -1.09765899, -1.13849163, -1.17932427, -1.22015692,\n", " -1.26098956, -1.3018222 , -1.34265485, -1.38348749, -1.42432013,\n", " -1.46515278, -1.50598542, -1.54681806, -1.58765071, -1.62848335,\n", " -1.669316 , -1.71014864, -1.75098128, -1.79181393, -1.83264657,\n", " -1.87347921, -1.91431186, -1.9551445 , -1.99597714, -2.03680979,\n", " -2.07764243, -2.11847507, -2.15930772, -2.20014036, -2.240973 ,\n", " -2.28180565, -2.32263829, -2.36347093, -2.40430358, -2.44513622,\n", " -2.48596886, -2.52680151, -2.56763415, -2.60846679, -2.64929944,\n", " -2.69013208, -2.73096473, -2.77179737, -2.81263001, -2.85346266,\n", " -2.8942953 , -2.93512794, -2.97596059, -3.01679323, -3.05762587,\n", " -3.09845852, -3.13929116, -3.1801238 , -3.22095645, -3.26178909,\n", " -3.30262173, -3.34345438, -3.38428702, -3.42511966, -3.46595231,\n", " -3.50678495, -3.54761759, -3.58845024, -3.62928288, -3.67011552,\n", " -3.71094817, -3.75178081, -3.79261345, -3.8334461 , -3.87427874,\n", " -3.91511139, -3.95594403, -3.99677667, -4.03760932, -4.07844196,\n", " -4.1192746 , -4.16010725, -4.20093989, -4.24177253, -4.28260518,\n", " -4.32343782, -4.36427046, -4.40510311, -4.44593575, -4.48676839,\n", " -4.52760104, -4.56843368, -4.60926632, -4.65009897, -4.69093161])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = logit_model.params\n", "reg = p['Intercept'] + x*p['Temperature']\n", "reg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we can plug `reg` into the logistic equation to get the y values:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.96877352, 0.96751435, 0.96620618, 0.96484724, 0.96343572,\n", " 0.96196975, 0.96044743, 0.95886677, 0.95722576, 0.95552232,\n", " 0.95375432, 0.95191957, 0.95001585, 0.94804087, 0.94599228,\n", " 0.94386771, 0.94166472, 0.93938081, 0.93701348, 0.93456013,\n", " 0.93201815, 0.9293849 , 0.92665767, 0.92383375, 0.92091037,\n", " 0.91788477, 0.91475413, 0.91151565, 0.90816649, 0.90470381,\n", " 0.90112478, 0.89742658, 0.89360639, 0.88966141, 0.88558888,\n", " 0.88138608, 0.87705033, 0.872579 , 0.86796954, 0.86321948,\n", " 0.85832641, 0.85328805, 0.84810222, 0.84276687, 0.83728007,\n", " 0.83164005, 0.82584521, 0.8198941 , 0.8137855 , 0.80751834,\n", " 0.80109182, 0.79450533, 0.78775853, 0.78085132, 0.77378386,\n", " 0.76655663, 0.75917036, 0.75162611, 0.74392524, 0.73606945,\n", " 0.72806076, 0.71990152, 0.71159446, 0.70314261, 0.69454941,\n", " 0.6858186 , 0.6769543 , 0.66796099, 0.65884349, 0.64960697,\n", " 0.64025691, 0.63079916, 0.62123986, 0.61158544, 0.60184267,\n", " 0.59201853, 0.5821203 , 0.57215547, 0.56213176, 0.55205707,\n", " 0.54193947, 0.53178715, 0.52160845, 0.51141178, 0.50120559,\n", " 0.49099841, 0.48079872, 0.47061502, 0.46045571, 0.45032916,\n", " 0.4402436 , 0.43020713, 0.42022769, 0.41031305, 0.40047075,\n", " 0.39070811, 0.38103221, 0.37144984, 0.36196754, 0.35259151,\n", " 0.34332766, 0.33418157, 0.32515848, 0.31626329, 0.30750057,\n", " 0.2988745 , 0.29038895, 0.2820474 , 0.27385299, 0.26580851,\n", " 0.25791641, 0.25017879, 0.24259741, 0.23517372, 0.22790884,\n", " 0.22080359, 0.2138585 , 0.20707381, 0.20044948, 0.19398522,\n", " 0.18768049, 0.18153452, 0.17554631, 0.16971468, 0.16403823,\n", " 0.1585154 , 0.15314444, 0.14792347, 0.14285047, 0.13792329,\n", " 0.13313966, 0.12849721, 0.12399349, 0.11962594, 0.11539198,\n", " 0.11128893, 0.10731407, 0.10346465, 0.09973789, 0.09613096,\n", " 0.09264106, 0.08926534, 0.08600097, 0.08284512, 0.07979496,\n", " 0.07684769, 0.07400052, 0.0712507 , 0.0685955 , 0.0660322 ,\n", " 0.06355816, 0.06117074, 0.05886736, 0.05664548, 0.0545026 ,\n", " 0.05243629, 0.05044413, 0.04852379, 0.04667295, 0.04488938,\n", " 0.04317088, 0.04151532, 0.03992059, 0.03838467, 0.03690557,\n", " 0.03548136, 0.03411016, 0.03279016, 0.03151957, 0.03029667,\n", " 0.02911979, 0.02798731, 0.02689765, 0.02584929, 0.02484075,\n", " 0.02387059, 0.02293743, 0.02203992, 0.02117677, 0.02034673,\n", " 0.01954856, 0.01878111, 0.01804323, 0.01733383, 0.01665185,\n", " 0.01599626, 0.01536608, 0.01476036, 0.01417817, 0.01361862,\n", " 0.01308086, 0.01256407, 0.01206744, 0.01159022, 0.01113165,\n", " 0.01069104, 0.01026768, 0.00986092, 0.00947012, 0.00909466])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = np.exp(reg)/(1 + np.exp(reg))\n", "y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot another scatter plot of the data, plus the plot of our calculated x and y values:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.plot.scatter(x = \"Temperature\", y = \"Failure\")\n", "plt.plot(x,y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One way to understand how well our model works is to make a *confusion table* or *confusion matrix*, which counts how many of each type of error there are. We can create the table using the `pred_table()` function." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[16., 0.],\n", " [ 3., 4.]])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "logit_model.pred_table()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The confusion matrix can be read as follows:\n", " \n", " predicted\n", " | 0 | 1 |\n", " --------------------------------\n", "observed | 0 | true negative | false positive\n", " | 1 | false negative | true positive\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How many correct predictions did the model make? What kind of wrong predictions did the model make?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Pima (Akimel Oʼodham) Indian Diabetes data\n", "\n", "The Akimel O'odham people, who were also known as the Pima Indians since European colonization of the US, currently have a high prevalence of diabetes. A data set of different possible diabetes indicators and whether the person has diabetes is on [Kaggle](ttps://www.kaggle.com/uciml/pima-indians-diabetes-database) or available [here](http://comet.lehman.cuny.edu/owen/teaching/mat328/diabetes.csv).\n", "\n", "Read in the dataset." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot a scatter plot of glucose vs. diabetes." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fit a logistic regression model to this data." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the model equation on top of your scatter plot." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What does the confusion table tell you about the fit of this model?" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.8" } }, "nbformat": 4, "nbformat_minor": 2 }